import Vue from 'vue'
import Vuex from 'vuex'

//挂在插件
Vue.use(Vuex)

export default new Vuex.Store({
  state: { //全局共享的数据
    count: 32131,
    isLogin: false, //登陆状态
  },
  mutations: { //mutations 修改数据
    increase(state) {
      state.count += 1
    },
    login(state) {
      state.isLogin = true;
    },
    logout(state) {
      state.isLogin = false;
    }
  },
  getters: {// 对state的数据进行加工处理，类似计算属性
    
    money: state => {
      return state.count + '元'
    }
  },
  actions: { //异步操作时 使用
    increaseAsync({store, commit}, payload) { // 参数 store对象的实例，可以进行参数结构，拿出对象向需要的属性方法
      //payload 时传递参数的

      setTimeout( () => { //将来如后台结合的，访问数据库啥啥的
        commit('increase')
      }, 2000)
    },

    submitLogin( {commit},payload) {

      return new Promise( resolve => {
        setTimeout( () => {
          commit('login');

          // 在这里 认为 登陆 成功了
          console.log('异步的登陆');
          
          resolve(true)
        }, 2000)
      })
      
    }
  }
})
